(1) Field of the Invention
The present invention relates to a compiler that converts a source program described in a high-level language such as C++ language into a machine language, and especially to optimization by a compiler.
(2) Description of the Related Art
A high-performance compiler that can effectively exploit a high function of a processor is highly sought after as the function of the processor has been greatly improved in recent years. In other words, a compiler that effectively generates advanced and specific instructions that the target processor executes is demanded.
For example, a processor that executes operation instructions in various fixed-point formats required for media processing such as digital signal processing and a high-performance processor that executes SIMD (Single Instruction Multiple Data) type instructions have been developed. The compiler that targets such a processor is required to optimize a code size and execution speed by effectively generating the operation instructions in the various fixed-point formats and the SIMD type instructions.
It is not necessarily said, however, that a conventional compiler effectively generates advanced and specific instructions that the processor executes in regard to a source program described in a high-level language such as C++ language. Consequently, in the development of applications for media processing and others that require strict conditions in terms of the code size and the execution speed, a user has no choice but to describe critical points in assembler instructions under the present conditions. But there is a problem that the programming by the assembler instructions not only requires more man-hours but also is vastly inferior in maintainability and portability compared with the development using a high-level language such as C++ language.
Additionally, the conventional compiler has within itself optimization processing for generating the advanced and specific instructions and the like that the processor executes. In other words, a processing module for optimization effectively using features of the target processor is included in the compiler itself and is integrated therein. Consequently, when a function of the compiler is extended or the specifications of the target compiler are changed, it is necessary to reconfigure the whole compiler. There is a problem that an upgrading of the version and the like of the compiler must be repeated numerous times.